Related data often may reside in various graph structures. Generally, graphs are abstract data structures that include of a set of nodes and a set of edges that establish relationships between the nodes, such as parent-child and so forth. Business modules, or other software applications used by businesses and entities, may access and/or process data in different graph forms, such as anonymous and identified graphs. Anonymous and identified graphs may need different attributes to instantiate the graphs. For example, accessing anonymous graphs generally requires some knowledge of root nodes and may not be easily accessed since anonymous graphs are runtime graphs that may exist on a volatile memory of the system. Identified graphs are often obtainable through a global unique identifier (GUID) of a business interface since they reside on a repository.
Other graphs may be time-dependent. This normally means the nodes and relations the graph consists of are only valid for a defined time period. This may require a more sophisticated evaluation of the graph structure than for non-time-dependent graphs. Evaluation of a graph in this context means building the real structure at runtime of a software application out of the datasets of the graph's elements (nodes and relations) including the corresponding validities. This may help answer questions like “what are the child nodes (successors) of the given node?”
In some cases, applications may take care of legacy persistencies (such as DB tables of the legacy system) without the need for migration. For example, these applications are often based on a pull-mechanism, which often indicates that the applications are not getting the data they work on from the caller itself but are responsible for the data retrieval. But the graphs stored in these persistencies are normally persistence-dependent.